﻿Name:            	DaiSystem
Description:        	DaiSystem(DAI氏)
Archive:   	 	.pac
Author:            	痴漢公賊 (glanser@163.com)
Version:        	0.9.0
Status: 		Alpha
Translation:		ravenex

【TODO】
To support decode modes 1.

【.dat archive info】
    resource archive with directory structure within
    original data may be one of bmp (CGs), ogg (sound and voice) or plain text (scripts).
    
    	HEADER:
            	s8 magic[16];		// "DAI_SYSTEM_01000"
            	u16 index_entries;      // file count
            	u32 index_length;       // length of index
        	INDEX: index entries are encrypted and of variable lengths
            	xxxx,yyyy,
            	"xxxx" is the original file name; "yyyy" is the offset (from head of archive); these fields are sperated by a comma (",").
        CONTENTS:
            	Following INDEX are the contents, which may be one of "Scripts", "CGs" or "OGGs":

		【Scripts】plain text
	    	SUB_HEADER:
			s8 magic[3];			// "HA0"
			u8 parameter_length;            // 2 bytes
			u32 uncomprlen;                 // uncompressed data length
			u8 mode[4];                     // decode mode ( 1 - unknown; 2 - unknown; 3 - byte level encryption; 4 - lzss compression )
			u32 reserved;
			s8 parameter[2];                // "OK"
			u32 uncomprlen0;                // uncompressed data length
			u32 flag_bitmap_bit_length;     // number of valid bits of the flags
			u32 flag_bitmap_byte_length;    // number of bytes used by the flags
	    	ACTUAL_CONTENT:
			Following the SUB_HEADER; actual format depends on decode mode.

		【CGs】raster image, always 24 bits per pixel
    		SUB_HEADER:
            		s8 magic[3];                    // "HA0"
            		u8 parameter_length;            // 5 bytes
            		u32 uncomprlen;                 // uncompressed data length
            		u8 mode[4];                     // decode mode ( 1 - unknown; 2 - unknown; 3 - byte level encryption; 4 - lzss compression )
            		u32 reserved;
            		u16 width;                      // image width
            		u16 height;                     // image height
            		u8 have_alpha;                  // zero - without alpha; non-zero: with alpha
            		u32 uncomprlen0;                // uncompressed data length
            		u32 flag_bitmap_bit_length;     // number of valid bits of the flags
            		u32 flag_bitmap_byte_length;    // number of bytes used by the flags
    		ACTUAL_CONTENT:
            		Following the SUB_HEADER; actual format depends on decode mode.

		【OGGs】Ogg Vorbis audio files
    		SUB_HEADER:
            		s8 magic[3];                    // "HA0"
            		u8 parameter_length;            // 2 bytes
            		u32 uncomprlen;                 // uncompressed data length
            		u8 mode[4];                     // always zero
            		u32 reserved;
            		s8 parameter[2];                // "OK"
    		ACTUAL_CONTENT:
            		Following the SUB_HEADER are the ogg audio files.

【ChangeLog】
2008-04-21 15:16 ver 0.9.0 supported decoding control field method 2; re-programmed extraction code
2007-05-07 04:11 ver 0.8.0 First release
